/*
 *  Report.h
 *  Report
 *
 *  Created by Hamza SHAWY on 20/10/07.
 *  Copyright 2007 __MyCompanyName__. All rights reserved.
 *
 */

 
#ifndef REPORT_H
#define REPORT_H

#include <iostream>
#include <string>
#include <list>


using std::list;
using std::string;


#include "Reference.h"

class Report  : public Reference  
{
       public: // the BEHAVIOR of objects insatnce of the class Report : the MEMBRE FUNCTIONS (METHODS) need to be accessed outside the class 

                Report (); // the default constructor of the class Report initializes data members to default values. 
				Report ( int, int, string, string, string, string); // the regular constructor of the class Report  
                ~Report (); // the destructor can not be overloaded because there is only one for the class Report
                
			    string getDepartment() const; // returns the department 
				string getInstitution() const; // returns the institution
				int getNumberOfPages() const;
				void print() const ; /* prints a string representation of objects of Report.
				               This member function overrides the one defined in the class Reference. */ 
				
				// the following methods are not asked but needed for the test of the previous methods and for the rest of the project
				void setDepartment(string) ; // prototype of the setDepartment function . Sets the report's department
				void setInstitution(string); // prototype of the seInstitution function . Sets the report's institution
				void setNumberOfPages(int); //sets the number of pages
				
        protected: // deals with the ATTRIBUTES of the object instance of the class Report : the DATA MEMBERS can cot be accessed outside the class (the data are ecapsulated or hidden)
				string Department ; //  which is unique for each (object instance of the class Report)
				string Institution ; //  which is unique for each (object instance of the class Report)
				int NumberOfPages;

				
 }; // end class Report

#endif    
